package com.jeeplus.mob.core;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jeeplus.common.utils.IdGen;
import com.jeeplus.config.swagger.IgnoreSwaggerParameter;
import org.hibernate.validator.constraints.Length;

import java.util.Date;

/**
 * 数据Entity类
 * @author jeeplus
 * @version 2017-05-16
 */
public abstract class MobDataEntity<T> extends MobBaseEntity<T> {

    private static final long serialVersionUID = 1L;

    protected String remarks;	// 备注
    @IgnoreSwaggerParameter
    protected String createBy;	// 创建者
    @IgnoreSwaggerParameter
    protected Date createTime;	// 创建日期
    @IgnoreSwaggerParameter
    protected String updateBy;	// 更新者
    @IgnoreSwaggerParameter
    protected Date updateTime;	// 更新日期
    @IgnoreSwaggerParameter
    protected String isEnable; 	// 删除标记（0：正常；1：删除；2：审核）

    public MobDataEntity() {
        super();
        this.isEnable = "1";
    }

    public MobDataEntity(String id) {
        super(id);
    }

    /**
     * 插入之前执行方法，需要手动调用
     */
    @Override
    public void preInsert(){
        if (!this.isNewRecord){
            if(this.getIdType().equals(IDTYPE_UUID)){
                setId(IdGen.uuid());
            }else if(this.getIdType().equals(IDTYPE_AUTO)){
                //使用自增长不需要设置主键
            }

        }
    }

    /**
     * 更新之前执行方法，需要手动调用
     */
    @Override
    public void preUpdate(){

        this.updateTime = new Date();
    }

    @Length(min=0, max=255)
    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }






    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }





    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    @JsonIgnore
    @Length(min=1, max=1)
    public String getIsEnable() {
        return isEnable;
    }

    public void setIsEnable(String isEnable) {
        this.isEnable = isEnable;
    }

}
